﻿// --------------------------------------------------------------------------------------------------------------------
// <copyright file="MenuCommand.cs" company="ScRePt">
//   Copyright © ScRePt 2010 - 2012
// </copyright>
// <summary>
//   The menu command.
// </summary>
// --------------------------------------------------------------------------------------------------------------------

namespace MP3D.Configuration
{
    #region Using Directives

    using System;
    using System.Windows.Forms;
    using System.Xml.Serialization;

    #endregion

    /// <summary>
    /// The menu command.
    /// </summary>
    [Serializable]
    [XmlInclude(typeof(MenuCommandApplyProfile))]
    [XmlInclude(typeof(MenuCommandGoTo))]
    [XmlInclude(typeof(MenuCommandProperty))]
    [XmlInclude(typeof(MenuCommandPropertyCycle))]
    [XmlInclude(typeof(MenuCommandPropertySet))]
    public class MenuCommand
    {
        #region Enums

        /// <summary>
        /// The menu command type.
        /// </summary>
        public enum MenuCommandType
        {
            /// <summary>
            /// The nothing.
            /// </summary>
            Nothing = 1, 

            /// <summary>
            /// The property set.
            /// </summary>
            PropertySet = 2, 

            /// <summary>
            /// The property increase.
            /// </summary>
            PropertyIncrease = 3, 

            /// <summary>
            /// The property decrease.
            /// </summary>
            PropertyDecrease = 4, 

            /// <summary>
            /// The goto menu.
            /// </summary>
            GotoMenu = 5, 

            /// <summary>
            /// The prev menu.
            /// </summary>
            PrevMenu = 6, 

            /// <summary>
            /// The apply profile.
            /// </summary>
            ApplyProfile = 7, 

            /// <summary>
            /// The update profile.
            /// </summary>
            UpdateProfile = 8, 

            /// <summary>
            /// The set mode 3 d.
            /// </summary>
            SetMode3D = 9, 

            /// <summary>
            /// The update subtitles.
            /// </summary>
            UpdateSubtitles = 10, 

            /// <summary>
            /// The detect letterbox.
            /// </summary>
            DetectLetterbox = 11,

            /// <summary>
            /// The stereoscopic menu.
            /// </summary>
            StereoscopicMenu = 12
        }

        #endregion

        #region Properties

        /// <summary>
        /// Gets or sets CommandType.
        /// </summary>
        [XmlAttribute]
        public MenuCommandType CommandType { get; set; }

        /// <summary>
        /// Gets or sets a value indicating whether Enabled.
        /// </summary>
        [XmlAttribute]
        public bool Enabled { get; set; }

        /// <summary>
        /// Gets or sets HotKey.
        /// </summary>
        [XmlAttribute]
        public Keys HotKey { get; set; }

        /// <summary>
        /// Gets or sets a value indicating whether HotKeyMode3DDependent.
        /// </summary>
        [XmlAttribute]
        public bool HotKeyMode3DDependent { get; set; }

        /// <summary>
        /// Gets or sets HotKeyModifier1.
        /// </summary>
        [XmlAttribute]
        public Keys HotKeyModifier1 { get; set; }

        /// <summary>
        /// Gets or sets HotKeyModifier2.
        /// </summary>
        [XmlAttribute]
        public Keys HotKeyModifier2 { get; set; }

        /// <summary>
        /// Gets or sets HotKeyModifier3.
        /// </summary>
        [XmlAttribute]
        public Keys HotKeyModifier3 { get; set; }

        /// <summary>
        /// Gets or sets Id.
        /// </summary>
        [XmlAttribute]
        public int Id { get; set; }

        /// <summary>
        /// Gets or sets Name.
        /// </summary>
        [XmlAttribute]
        public string Name { get; set; }

        #endregion
    }
}